package com.swufe.scoresforapp.Yonghu;

import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;

import com.swufe.scoresforapp.GradetoRank;
import com.swufe.scoresforapp.R;

public class ChangeinfoActivity extends AppCompatActivity {
        public final static String EXTRA_MESSAGE = "com.swufe.scoresforapp.Yonghu.MESSAGE";//定义EXTRA_MESSAGE 页面跳转时用

        public static messege newinfo = YonghuActivity.info;//继承用户中心页面的信息

        private boolean check = false;//是否结束对edittext的检测
        private Handler handle;

        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.yonghuchangeinfomations);

            //以下为需要添加事件的控件

            //返回按钮
            ImageButton fanhui = (ImageButton) findViewById(R.id.huidaoinfo);
            fanhui.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //调用Eventfanhui()函数
                    Eventfanhui();
                }
            });

            //确认更改按钮
            Button submit = (Button)findViewById(R.id.submit);
            submit.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //调用EventSubmit()函数
                    EventSubmit();
                }
            });

            //输入分数影响排名 实时更改
            EditText score = (EditText) findViewById(R.id.newScore);

            //用户头像更改
            ImageView image = (ImageView)findViewById(R.id.changephoto);
            image.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //更换头像的监听
                }
            });

            //设置界面信息
            setAll(newinfo);
            spinner();
        }

        //有关下拉菜单的设置
        public void spinner(){
            /*
            地区筛选
             */
            Spinner areaspinner = (Spinner) findViewById(R.id.areaspinner);
            // 定义一个字符串数组来存储下拉框每个item要显示的文本
            final String[] areaitems = { "安徽", "山东", "江西"};
            // 定义数组适配器，利用系统布局文件
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.spinneritem, areaitems);
            // 定义下拉框的样式
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            // 下面的可以直接用适配器添加item(需要把数组适配器最后一个参数去掉)
            // adapter.add("java");
            // 设置下拉列表的条目被选择监听器
            areaspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

                @Override
                public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                    //Toast.makeText(ChangeinfoActivity.this, areaitems[arg2], 0).show();
                    // 注意： 这句话的作用是当下拉列表刚显示出来的时候，数组中第0个文本不会显示Toast
                    // 如果没有这句话，当下拉列表刚显示出来的时候，数组中第0个文本会显示Toast
                  //  arg0.setVisibility(View.VISIBLE);
                }

                @Override
                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub

                }
            });

            areaspinner.setAdapter(adapter);



            /*
            科类筛选
             */
            Spinner classpinner = (Spinner) findViewById(R.id.classspinner);
            // 定义一个字符串数组来存储下拉框每个item要显示的文本
            final String[] classitems = { "文科", "理科"};
            // 定义数组适配器，利用系统布局文件
            ArrayAdapter<String> classadapter = new ArrayAdapter<String>(this,R.layout.spinneritem, classitems);
            // 定义下拉框的样式
            classadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            // 下面的可以直接用适配器添加item(需要把数组适配器最后一个参数去掉)
            // adapter.add("java");
            // 设置下拉列表的条目被选择监听器
            areaspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

                @Override
                public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                    //Toast.makeText(ChangeinfoActivity.this, areaitems[arg2], 0).show();
                    // 注意： 这句话的作用是当下拉列表刚显示出来的时候，数组中第0个文本不会显示Toast
                    // 如果没有这句话，当下拉列表刚显示出来的时候，数组中第0个文本会显示Toast
                    //  arg0.setVisibility(View.VISIBLE);
                }

                @Override
                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub

                }
            });

            classpinner.setAdapter(classadapter);


            /*
            sex
             */
            Spinner sexspinner = (Spinner) findViewById(R.id.sexspinner);
            // 定义一个字符串数组来存储下拉框每个item要显示的文本
            final String[] sexitems = { "男", "女"};
            // 定义数组适配器，利用系统布局文件
            ArrayAdapter<String> sexadapter = new ArrayAdapter<String>(this,R.layout.spinneritem, sexitems);
            // 定义下拉框的样式
            sexadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            // 下面的可以直接用适配器添加item(需要把数组适配器最后一个参数去掉)
            // adapter.add("java");
            // 设置下拉列表的条目被选择监听器
            areaspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

                @Override
                public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                    //Toast.makeText(ChangeinfoActivity.this, areaitems[arg2], 0).show();
                    // 注意： 这句话的作用是当下拉列表刚显示出来的时候，数组中第0个文本不会显示Toast
                    // 如果没有这句话，当下拉列表刚显示出来的时候，数组中第0个文本会显示Toast
                    //  arg0.setVisibility(View.VISIBLE);
                }

                @Override
                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub

                }
            });

            sexspinner.setAdapter(sexadapter);
        }


        //设置界面信息的函数
        public void setAll(messege m){
            //用户名
            TextView newname = (TextView) findViewById(R.id.newName);
            newname.setText(m.name);
            //分数
            EditText newscore = (EditText)findViewById(R.id.newScore);
            newscore.setHint(m.score);
            //排名
            TextView order = (TextView)findViewById(R.id.neworder);
            order.setText(m.order);
            //地区
            //Spinner area = (Spinner) findViewById(R.id.areaspinner);
            //科类
            /*TextView type = (TextView) findViewById(R.id.newType);
            type.setText(m.type);*/
            //sex
            /*TextView sex = (TextView) findViewById(R.id.newsex);
            sex.setText(m.sex);*/
        }

        /*
        以下为对应控件触发的函数
         */
        public void Eventfanhui(){
            /*
            点击返回按钮触发的事件
             */

            //返回个人信息中心（上一页面）
            finish();
        }
        public void EventSubmit(){
            /*
            点击确认时触发的事件 弹出提示窗口
             */
            AlertDialog.Builder alertdialogbuilder=new AlertDialog.Builder(this);
            alertdialogbuilder.setMessage("确定更改个人信息？");
            alertdialogbuilder.setPositiveButton("确定", click1);
            alertdialogbuilder.setNegativeButton("取消", click2);
            AlertDialog alertdialog1=alertdialogbuilder.create();
            alertdialog1.show();



        }
    private DialogInterface.OnClickListener click1=new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface arg0, int arg1)
        {
            //确认更改后
            //1.将新的数据写入数据库
            changeInformation();
            // /2.返回信息更新后的个人页面
            returnPage();

        }
    };
    private DialogInterface.OnClickListener click2=new DialogInterface.OnClickListener()
    {@Override

    public void onClick(DialogInterface arg0, int arg1)
    {
        arg0.cancel();
    }
    };//点击取消

    public void returnPage(){
        YonghuActivity.yonghuzhongxin.finish();
        Intent intent = new Intent(this, YonghuActivity.class);
        intent.putExtra("Name",newinfo.name);
        finish();
        startActivity(intent);
    }//返回用户信息中心


    public void changeInformation(){
        final messege m = getPageInformation();
        if(!m.score.equals(newinfo.score)||
                !m.order.equals(newinfo.order)||
                !m.area.equals(newinfo.area)||
                !m.type.equals(newinfo.type)||
                !m.sex.equals(newinfo.sex)){//当某一项发生改变
            newinfo = m;
            new Thread(new Runnable() { //开启线程将数据吸入数据库

                public void run() {
                   Dataoutput out = new Dataoutput();
                   Dataimport in = new Dataimport();
                   String year = in.getYear(newinfo.name);
                   newinfo.order = in.getOrder(year,newinfo.area,newinfo.type,m.score);
                   out.setScore(newinfo.name,newinfo.score);
                   out.setArea(newinfo.name,newinfo.area);
                   out.setSex(newinfo.name,newinfo.sex);
                   out.setType(newinfo.name,newinfo.type);
                   GradetoRank.gradetorank(newinfo.name);

                }
            }).start();
        }//未发生变化则一切不变

    }//更改数据库信息个人信息


    //获取更改信息页面上的文本信息
    public messege getPageInformation(){
        messege temp = new messege(newinfo.name,newinfo.sex,newinfo.area,newinfo.type,newinfo.score,newinfo.order);
        //新的用户名获取
        TextView name = (TextView) findViewById(R.id.newName);
        temp.name = name.getText().toString();
        //新的成绩获取
        EditText score = (EditText)findViewById(R.id.newScore);
        temp.score = score.getText().toString();
        if(temp.score.equals("")||temp.score == null){
            temp.score = score.getHint().toString();
        }
        //新的排名获取
        TextView order = (TextView) findViewById(R.id.neworder);
        temp.order = order.getText().toString();

        //新的地区获取
        Spinner area = (Spinner)findViewById(R.id.areaspinner);
        temp.area = area.getSelectedItem().toString();

        //新的考试类别获取
        Spinner type = (Spinner)findViewById(R.id.classspinner);
        temp.type = type.getSelectedItem().toString();
        //新的性别获取
        Spinner sex = (Spinner)findViewById(R.id.sexspinner);
        temp.sex = sex.getSelectedItem().toString();

        return temp;//返回当前页面新信息
    }

    //检查editext是否有更改 更改则返回true
    public boolean check(){
        TextView newScore = (TextView)findViewById(R.id.newScore);
        if(newScore.getText().equals(newinfo.score)) return false;
        else return true;
    }
}
